﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.Atividade;
using Negocio.Evento;
using Persistente;

namespace Finalcountdown.Atividade.Incluir
{
    public partial class incluirAtividade : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                carregarDdl();
            }
        }

        private void carregarDdl()
        {
            var obNEvento = new NEvento();
            ddlEventos.DataSource = obNEvento.pegarEventosAtivos();
            ddlEventos.DataBind();
            ddlEventos.Items.Insert(0, new ListItem("Selecionar o Evento", "0"));
        }

        protected void lnk_Click(object sender, EventArgs e)
        {

        }

        protected void lkbAddAtividades_Click(object sender, EventArgs e)
        {
            if(ddlEventos.SelectedValue != "0")
            {
                ddlEventos.Enabled = false;
                lkbAddAtividades.Visible = false;
                LkbSelecOutroEvento.Visible = true;
                lblEventoObrigatorio.Text = "";
                lblEventoObrigatorio.Visible = false;
                pnlAtividades.Visible = true;
                //Carregando as atividades já relacionadas ao evento
                carregarAtividadesDoEvento();
            }else
            {
                lblEventoObrigatorio.Text = "O Evento é um campo obrigatório!";
                lblEventoObrigatorio.Visible = true;
                pnlAtividades.Visible = false;
            }
        }

        protected void LinkSelecOutroEvento_Click(object sender, EventArgs e)
        {
            ddlEventos.Enabled = true;
            lkbAddAtividades.Visible = true;
            LkbSelecOutroEvento.Visible = false;
            pnlAtividades.Visible = false;
        }

        private void carregarAtividadesDoEvento()
        {
            var obNAtividade = new NAtividade();
            grdAtividades.DataSource = obNAtividade.pegarAtividadesPorEvento(Convert.ToInt32(ddlEventos.SelectedValue));
            grdAtividades.DataBind();
        }

        protected void ddlEventos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(ddlEventos.SelectedValue != "0")
            {
                var obNEvento = new NEvento();
                obNEvento.pegarEventoPorId(Convert.ToInt32(ddlEventos.SelectedValue));
                lblDtEvento.Text = obNEvento.dtEvento.ToShortDateString();
            }else
            {
                lblDtEvento.Text = "";
            }
        }

        protected void lkbSalvarAtividade_Click(object sender, EventArgs e)
        {
            var obNAtividade = new NAtividade();
            if (verificarForm())
            {
                obNAtividade.nmAtividade = txtNmAtividade.Text;
                obNAtividade.tmEventoTotal = Convert.ToInt32(txtTmAtividade.Text.Replace("_",""));
                obNAtividade.idEvento = Convert.ToInt32(ddlEventos.SelectedValue);
                if(obNAtividade.Salvar())
                {
                    divMsnIncluirSucesso.Visible = true;
                    divMsnIncluirAtencao.Visible = false;
                    divMsnAtualizarSucesso.Visible = false;
                }
                else
                {
                    divMsnIncluirSucesso.Visible = false;
                    divMsnIncluirAtencao.Visible = true;
                    divMsnAtualizarSucesso.Visible = false;
                }
                carregarAtividadesDoEvento();
            }
        }

        public bool verificarForm()
        {
            var boForm = true;

            if (string.IsNullOrEmpty(txtNmAtividade.Text))
            {
                boForm = false;
                lblNmAtividadeObrigatorio.Text = "Nome da Atividade é obrigatório!";
            }
            else
            {
                lblNmAtividadeObrigatorio.Text = "";
            }
            if (txtTmAtividade.Text == "___")
            {
                boForm = false;
                lblTmAtividadeObrigatorio.Text = "O Tempo da Atividade é obrigatório!";
            }
            else
            {
                lblTmAtividadeObrigatorio.Text = "";
            }


            return boForm;
        }

        protected void grdAtividades_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "editar":
                    var idEventoAlterar = e.CommandArgument.ToString();
                    hdfIdAtividadeAlterar.Value = idEventoAlterar;
                    var obNAtividade = new NAtividade();
                    var obTbAtividade = obNAtividade.pegarAtividadePorId(Convert.ToInt32(idEventoAlterar));
                    txtNmAtividadeAlterar.Text = obTbAtividade.nm_atividade;
                    txtTmAtividadeAlterar.Text = obTbAtividade.tm_evento_total.Minutes.ToString();
                    ModalPopupAlterar.Show();
                    break;
                case "remover":
                    var idEventoRemover = e.CommandArgument.ToString();
                    hdfIdAtividadeRemover.Value = idEventoRemover;
                    ModalPopupRemover.Show();
                    break;
            }
        }

        protected void lkbSim_Click(object sender, EventArgs e)
        {
            var idAtividade = Convert.ToInt32(hdfIdAtividadeRemover.Value);
            var obNAtividade = new NAtividade();
            obNAtividade.Remover(idAtividade);
            carregarAtividadesDoEvento();
        }

        protected void lkbNao_Click(object sender, EventArgs e)
        {
            ModalPopupRemover.Hide();
        }

        protected void lkbCancelar_Click(object sender, EventArgs e)
        {
            ModalPopupAlterar.Hide();
        }

        protected void lkbAlterar_Click(object sender, EventArgs e)
        {
            if(verificarFormAlterar())
            {
                var obTbATividade = new tb_atividades();
                var obNAtividade = new NAtividade();

                obTbATividade.id_atividade = Convert.ToInt32(hdfIdAtividadeAlterar.Value);
                obTbATividade.nm_atividade = txtNmAtividadeAlterar.Text;
                obTbATividade.tm_evento_total = TimeSpan.FromMinutes(Convert.ToInt32(txtTmAtividadeAlterar.Text.Replace("_", "")));

                obNAtividade.Alterar(obTbATividade);
                carregarAtividadesDoEvento();

                divMsnIncluirSucesso.Visible = false;
                divMsnIncluirAtencao.Visible = false;
                divMsnAtualizarSucesso.Visible = true;

            }
        }

        private bool verificarFormAlterar()
        {
            var boForm = true;

            if (string.IsNullOrEmpty(txtNmAtividadeAlterar.Text))
            {
                boForm = false;
                lblNmAtividadeAlterarObrig.Text = "Nome da Atividade é obrigatório!";
            }
            else
            {
                lblNmAtividadeAlterarObrig.Text = "";
            }
            if (txtTmAtividadeAlterar.Text == "___")
            {
                boForm = false;
                lblTmAtividadeAlterarObrig.Text = "O Tempo da Atividade é obrigatório!";
            }
            else
            {
                lblTmAtividadeAlterarObrig.Text = "";
            }

            return boForm;
        }

        protected void grdAtividades_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var obNAtividade = new NAtividade();
                var nrSituacaoContagem = obNAtividade.pegarSituacaoContagem(Convert.ToInt32(e.Row.Cells[0].Text));
                if(nrSituacaoContagem == 0)
                {
                    e.Row.Cells[3].Style.Add("color", "#7baffc");
                }else
                {
                    e.Row.Cells[3].Style.Add("color", "#fc7b7b");
                }
            }
        }
    }
}